Many transaction-based computing systems are monolithic and perform operations within a single computing service. However, a trend has emerged toward decomposition into multiple interoperable computing services (also referred to as a “service” or “services”) performing one or more tasks. Frequently, to execute a larger transaction, the transaction is decomposed into many different tasks to be performed by various different components or services.
In some instances, the tasks performed by the services are dependent on one another (e.g., a first service performs a first task to produce an output that is used as an input to a second service). For example, a traditional database transaction may involve multiple dependent services (e.g., an entitlement service, an identity service, an organization service, an authentication service, an authorization service, a functional service (e.g., scoring for an assessment, etc.)) configured to perform multiple different tasks.
However, a transaction may fail due to the presence of inconsistent states across the multiple inter-dependent services resulting from a failure or issue with one or more of the services. In addition, the failure of one service upon which one or more other services are dependent requires the backing out or reversal of execution of other dependent services.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.